#ifndef _JEU_H
#define _JEU_H

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "Personnage.h"
#include "Terrain.h"
#include "Score.h"



/**
@struct Jeu Jeu.h "~/lif7-projet-jetpack/src/Jeu.h" Structure définissant le jeu. \n
*/
typedef struct
{
	Terrain Ter;
	Terrain Tersuiv;
	Personnage Per;
	Score Score;
	int vx, vy;
} Jeu;


/**
@brief <B> Brief Description </B> initialise le jeu. \n
@details <B> Description </B> jeuInit initialise le terrain,le personnage et le score (après vérification) de la structure Jeu. \n
@param[in,out] Jeu Pointeur sur Jeu pJeu. \n
*/
void jeuInit(Jeu * pJeu);

/**
@brief <B> Brief Description </B> Libère la mémoire allouée. \n </B>
@details <B> Description </B> Libère la mémoire. \n
@param[in,out] Jeu Pointeur sur pJeu. \n
 */
void jeuLibere(Jeu * pJeu);

/**
@brief <B> Brief Description </B> Récupère l'action du clavier. \n </B>
@details <B> Description </B> Récupère l'action du clavier. \n
@param[in,out] Jeu Pointeur sur pJeu. \n
@param[in] char touche. \n
 */
void actionClavier (Jeu * pJeu, char touche);


/**
@brief <B> Brief Description </B> Evolution du jeu. \n </B>
@details <B> Description </B> Fait évoluer le jeu. \n
@param[in,out] Jeu Pointeur sur pJeu. \n
*/
void jeuEvolue (Jeu * pJeu);

/**
@brief <B> Brief Description </B> Accesseur. \n </B>
@details <B> Description </B> Permet de récupérer les coordonnées du personnage. \n
@param[in,out] Jeu Pointeur sur pJeu. \n
@return Retourne Personnage. \n
*/
const Personnage *getPerso(const Jeu *pJeu);

/**
@details <B> Description </B> Fait la division euclidienne entre deux nombres. \n
@param[in] Entier a. \n
@param[in] Entier b. \n
*/
int divEuclidienne(int a, int b);

const Terrain *getTerrain(const Jeu *pJeu);




#endif
